
<!DOCTYPE html>
<html lang="en" data-figures="" class="page">
  <head>
<title>Maven | Alexzshl</title>
<meta charset="utf-8">
<meta name="generator" content="Hugo 0.80.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta property="og:locale" content="en" />

<meta property="og:type" content="article">
<meta name="description" content="Article description.">
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="">
<meta name="twitter:title" content="Maven" />
<meta property="og:url" content="https://alexzshl.gitee.io/blog/post/maven/" />
<meta property="og:title" content="Maven" />
<meta property="og:description" content="Article description." />
<meta property="og:image" content="https://alexzshl.gitee.io/blog/" />
<link rel="apple-touch-icon" sizes="180x180" href='https://alexzshl.gitee.io/blog/icons/apple-touch-icon.png'>
<link rel="icon" type="image/png" sizes="32x32" href='https://alexzshl.gitee.io/blog/icons/favicon-32x32.png'>
<link rel="manifest" href='https://alexzshl.gitee.io/blog/icons/site.webmanifest'>
<link rel="mask-icon" href='https://alexzshl.gitee.io/blog/safari-pinned-tab.svg' color="#002538">
<meta name="msapplication-TileColor" content="#002538">
<meta name="theme-color" content="#002538">

<link rel="canonical" href="https://alexzshl.gitee.io/blog/post/maven/">

    

    
    
    <link rel="preload" href="https://alexzshl.gitee.io/blog/css/styles.782bf96a82b3cc5b3cee4c47a42cc81321f16960a6d41fab3277c4abe047bc7ae044ea1bb7ae4d237c12baa0143e02f95969e5e8b6e68d9dcfd14158cfa244ac.css" integrity = "sha512-eCv5aoKzzFs87kxHpCzIEyHxaWCm1B&#43;rMnfEq&#43;BHvHrgROobt65NI3wSuqAUPgL5WWnl6LbmjZ3P0UFYz6JErA==" as="style" crossorigin="anonymous">
    <link rel="preload" href="https://alexzshl.gitee.io/blog/js/bundle.min.16ce52f0798f54d65cefb0a0fc9228cf99e0b73de57f8a1545fe14259265bf79ba12fe15afd2fd75d5f0bff8f416e8ca8c5c3458f87e014cbfbed8ccfdaee327.js" as="script" integrity=
    "sha512-Fs5S8HmPVNZc77Cg/JIoz5ngtz3lf4oVRf4UJZJlv3m6Ev4Vr9L9ddXwv/j0FujKjFw0WPh&#43;AUy/vtjM/a7jJw==" crossorigin="anonymous">

    
    <link rel="stylesheet" type="text/css" href="https://alexzshl.gitee.io/blog/css/styles.782bf96a82b3cc5b3cee4c47a42cc81321f16960a6d41fab3277c4abe047bc7ae044ea1bb7ae4d237c12baa0143e02f95969e5e8b6e68d9dcfd14158cfa244ac.css" integrity="sha512-eCv5aoKzzFs87kxHpCzIEyHxaWCm1B&#43;rMnfEq&#43;BHvHrgROobt65NI3wSuqAUPgL5WWnl6LbmjZ3P0UFYz6JErA==" crossorigin="anonymous">
    
  </head>
  
  
    
  
  <body data-code="100" data-lines="false" id="documentTop">

<header class="nav_header" >
  <nav class="nav">
    <a href='https://alexzshl.gitee.io/blog/' class="nav_brand nav_item">
        Alexzshl
      <div class="nav_close">
        <div>
          <svg class="icon">
  <use xlink:href="#open-menu"></use>
</svg>
          <svg class="icon">
  <use xlink:href="#closeme"></use>
</svg>
        </div>
      </div>
    </a>
    <div class='nav_body nav_body_'>
      
      
      
        

      
<div class='follow'>
<div class="color_mode">
  <input type="checkbox" class="color_choice" id="mode">
</div>

</div>

    </div>
  </nav>
</header>

    <main>
  
<div class="grid-inverse wrap content">
  <article class="post_content">
    <h1 class="post_title">Maven</h1><div class="post_meta">
  
    <svg class="icon">
  <use xlink:href="#calendar"></use>
</svg>
    <span class="post_date">
      Oct 6, 2020</span>
      <a href='https://alexzshl.gitee.io/blog/tags/maven' class="post_tag button button_translucent">maven
      </a>
</div>

    
  <div class="post_share">
    Share on:
    <a href="https://twitter.com/intent/tweet?text=Maven&url=https%3a%2f%2falexzshl.gitee.io%2fblog%2fpost%2fmaven%2f&tw_p=tweetbutton" class="twitter" title="Share on Twitter" target="_blank" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#twitter"></use>
</svg>
    </a>
    <a href="https://www.facebook.com/sharer.php?u=https%3a%2f%2falexzshl.gitee.io%2fblog%2fpost%2fmaven%2f&t=Maven" class="facebook" title="Share on Facebook" target="_blank" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#facebook"></use>
</svg>
    </a>
    <a href="#linkedinshare" id = "linkedinshare" class="linkedin" title="Share on LinkedIn" rel="nofollow">
      <svg class="icon">
  <use xlink:href="#linkedin"></use>
</svg>
    </a>
    <a href="https://alexzshl.gitee.io/blog/post/maven/" title="Copy Link" class="link link_yank">
      <svg class="icon">
  <use xlink:href="#copy"></use>
</svg>
    </a>
  </div>

    
    
    <h2>Overview</h2>
    <nav id="TableOfContents">
  <ul>
    <li><a href="#什么是-maven">什么是 Maven</a></li>
    <li><a href="#构建工具发展历史">构建工具发展历史</a></li>
    <li><a href="#hello-world">Hello World</a></li>
    <li><a href="#maven-常用命令">Maven 常用命令</a></li>
    <li><a href="#项目命令">项目命令</a>
      <ul>
        <li><a href="#cli-常规命令">CLI 常规命令</a></li>
        <li><a href="#执行-maven-时联网下载的问题">执行 maven 时联网下载的问题</a></li>
        <li><a href="#修改maven默认本地仓库位置">修改maven默认本地仓库位置</a></li>
      </ul>
    </li>
    <li><a href="#pomxml-文件">pom.xml 文件</a>
      <ul>
        <li><a href="#含义">含义</a></li>
      </ul>
    </li>
    <li><a href="#坐标">坐标</a>
      <ul>
        <li><a href="#maven-坐标">Maven 坐标</a></li>
      </ul>
    </li>
    <li><a href="#仓库">仓库</a>
      <ul>
        <li><a href="#本地仓库">本地仓库</a></li>
        <li><a href="#远程仓库">远程仓库</a></li>
        <li><a href="#仓库中保存的内容-maven-工程">仓库中保存的内容: Maven 工程</a></li>
      </ul>
    </li>
    <li><a href="#依赖">依赖</a>
      <ul>
        <li><a href="#依赖范围">依赖范围</a></li>
      </ul>
    </li>
    <li><a href="#生命周期">生命周期</a>
      <ul>
        <li><a href="#阶段">阶段</a></li>
        <li><a href="#生命周期-1">生命周期</a></li>
      </ul>
    </li>
    <li><a href="#ide集成相关">IDE集成相关</a></li>
    <li><a href="#依赖的传递性">依赖的传递性</a></li>
    <li><a href="#依赖的排除">依赖的排除</a></li>
    <li><a href="#常见问题">常见问题</a>
      <ul>
        <li><a href="#配置maven仓库国内镜像源">配置maven仓库国内镜像源</a></li>
        <li><a href="#环境配置方案">环境配置方案</a></li>
      </ul>
    </li>
    <li><a href="#静态资源导出">静态资源导出</a></li>
    <li><a href="#手动安装第三方jar">手动安装第三方JAR</a></li>
    <li><a href="#导出项目依赖的jar">导出项目依赖的JAR</a></li>
    <li><a href="#nexus-repository-oss">nexus repository oss</a>
      <ul>
        <li><a href="#aliyun">aliyun</a></li>
      </ul>
    </li>
    <li><a href="#maven项目发布到私有仓库">maven项目发布到私有仓库</a></li>
    <li><a href="#maven-aliyun-使用指南">Maven Aliyun 使用指南</a>
      <ul>
        <li><a href="#仓库介绍">仓库介绍</a></li>
        <li><a href="#配置指南">配置指南</a></li>
      </ul>
    </li>
    <li><a href="#maven-plugin-插件">maven plugin 插件</a></li>
  </ul>
</nav>
    <h2 id="什么是-maven">什么是 Maven</h2>
<p>Maven 是一款服务于 Java 平台的自动化构建工具</p>
<p>Maven 项目有自己的一套项目规范, 因此 Maven 项目理论上可以通用于所有支持 Maven 的 IDE 工具</p>
<h2 id="构建工具发展历史">构建工具发展历史</h2>
<p>Make -&gt; ant -&gt; Maven -&gt; Gradle</p>
<h2 id="hello-world">Hello World</h2>
<p>通过 maven 的 cli 工具新建一个 Maven 项目:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir helloworld_maven
mvn 
</code></pre></div><h2 id="maven-常用命令">Maven 常用命令</h2>
<h2 id="项目命令">项目命令</h2>
<ul>
<li><code>mvn clean</code> 清理</li>
<li><code>mvn compile</code> 编译主程序:</li>
<li><code>mvn test-compile</code> 编译测试程序:</li>
<li><code>mvn test</code> 执行测试</li>
<li><code>mvn package</code> 打包</li>
<li><code>mvn install</code> 安装我们的Maven项目至本地仓库(比如用户自己写了一个工具包希望给别人使用)</li>
<li><code>mvn site</code> 生成站点</li>
<li><code>mvn deploy</code> 部署</li>
</ul>
<h3 id="cli-常规命令">CLI 常规命令</h3>
<p>mvn -x</p>
<p>mvn help:effective-settings</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn help:effective-settings | findstr /r <span style="color:#e6db74">&#34;&lt;localRepository&gt;.*repository&lt;/localRepository&gt;&#34;</span>
</code></pre></div><h3 id="执行-maven-时联网下载的问题">执行 maven 时联网下载的问题</h3>
<p>maven核心程序仅仅定义了抽象的生命周期,具体的工作必须由maven插件来完成,插件并不包含在maven的核心程序中.</p>
<p>当首次执行maven命令需要用到某些插件时,maven核心程序会首先到本地仓库中查找: <code>[home]\.m2\repository</code></p>
<p>maven核心如果在本地仓库中找不到需要的插件,会自动联网从中央远程仓库下载文件,如果无法联网则会导致命令执行失败</p>
<h3 id="修改maven默认本地仓库位置">修改maven默认本地仓库位置</h3>
<p><code>...\apache-maven-3.6.3\con\settings.xml</code> 中的<code>&lt;localRepository&gt;/path/to/local/repo&lt;/localRepository&gt;</code>复制到注释外面,修改为实际的仓库路径</p>
<h2 id="pomxml-文件">pom.xml 文件</h2>
<h3 id="含义">含义</h3>
<p><code>Project Object Model</code> 项目对象模型</p>
<h2 id="坐标">坐标</h2>
<h3 id="maven-坐标">Maven 坐标</h3>
<p>使用三个向量在仓库中唯一定义一个Maven工程</p>
<ul>
<li><code>groupid</code>: 公司或组织域名倒序</li>
<li><code>artifactid</code>: 模块名(英文含义为特征值)</li>
<li><code>version</code>: 版本</li>
</ul>
<p>Maven 坐标与仓库目录是完全一致的对应关系</p>
<h2 id="仓库">仓库</h2>
<h3 id="本地仓库">本地仓库</h3>
<p>本地仓库 <code>${home}\.M2\repository</code></p>
<h3 id="远程仓库">远程仓库</h3>
<ol>
<li>局域网仓库(私服): 搭建在局域网环境中,为局域网范围内的所有maven工程服务(Nexus私服)</li>
<li>中央仓库: Maven官方远程仓库</li>
<li>中央仓库镜像: 为中央仓库分担流量,提升访问速度</li>
</ol>
<h3 id="仓库中保存的内容-maven-工程">仓库中保存的内容: Maven 工程</h3>
<ol>
<li>Maven自身所需要的插件</li>
<li>第三方框架或者工具的jar包</li>
<li>我们自己开发的maven工具</li>
</ol>
<h2 id="依赖">依赖</h2>
<p>Maven 解析依赖信息时会首先到本地仓库中查找被依赖的jar包.对于我们自己开发的maven工程,使用 <code>mvn install</code> 就可以安装我们自己开发的 maven工程到本地仓库</p>
<h3 id="依赖范围">依赖范围</h3>
<p>依赖范围 <code>scope</code></p>
<ol>
<li><code>compile</code> : 例如 spring-core</li>
</ol>
<ul>
<li>对主程序是否有效: 有效
<ul>
<li>对测试程序是否有效: 有效</li>
<li>是否参与打包: 参与</li>
<li>是否参与部署: 参与</li>
</ul>
</li>
</ul>
<ol start="2">
<li><code>test</code> :  例如 <code>junit</code></li>
</ol>
<ul>
<li>对主程序是否有效: 无效
<ul>
<li>对测试程序是否有效: 有效</li>
<li>是否参与打包: 不参与</li>
<li>是否参与部署: 不参与</li>
</ul>
</li>
</ul>
<ol start="3">
<li><code>provided</code> : 不参与打包,服务器已经提供,例如: <code>servlet-api.jar</code></li>
</ol>
<ul>
<li>对主程序是否有效: 有效
<ul>
<li>对测试程序是否有效: 有效</li>
<li>是否参与打包: 不参与</li>
<li>是否参与部署: 不参与</li>
</ul>
</li>
</ul>
<h2 id="生命周期">生命周期</h2>
<h3 id="阶段">阶段</h3>
<p>各个构建环节执行的顺序,不能打乱顺序</p>
<ol>
<li>清理: 将以前编译得到的旧的class字节码文件清除</li>
<li>编译: 将java源程序编译为class字节码文件</li>
<li>测试: 自动测试,自动调用junit程序</li>
<li>报告: 测试程序执行的结果</li>
<li>打包: 动态web工程打war包,java工程打jar包</li>
<li>安装: Maven特定的概念,将打包得到的文件复制到本地仓库并生成一些Maven依赖相关配置文件</li>
<li>部署: 将动态web工程生成的war包复制到servlet容器指定目录下,使其可以运行(提供web访问功能)</li>
</ol>
<h3 id="生命周期-1">生命周期</h3>
<ol>
<li>
<p>各个构建环节执行的顺序,不能打乱顺序</p>
</li>
<li>
<p>Maven 的核心程序中定义了抽象的生命周期,生命周期中各个阶段的任务是由插件来完成的</p>
</li>
<li>
<p>Maven核心程序为了更好地实现自动化构建,按照以下特点来执行生命周期中的各个阶段: 不论现在要执行生命周期中的哪个阶段,都是从这个生命周期最初的位置开始执行</p>
</li>
</ol>
<p>Maven 有三套相互独立的生命周期:</p>
<ol>
<li>Clean Lifecycle: 在进行真正的构建之前进行一些清理工作</li>
<li>Default Lifecycle: 构建的核心部分,编译,测试打包,安装,部署等等</li>
<li>Site Lifecycle: 生成项目报告,站点,发布站点</li>
</ol>
<h4 id="clean-生命周期">Clean 生命周期</h4>
<h4 id="site-生命周期">Site 生命周期</h4>
<h4 id="default-生命周期">Default 生命周期</h4>
<h2 id="ide集成相关">IDE集成相关</h2>
<p>设置通过maven创建的的工程的JDK版本(一劳永逸):</p>
<ol>
<li>打开 settings.xml 文件</li>
<li>找到 profiles 标签</li>
<li>加入如下配置</li>
</ol>
<h2 id="依赖的传递性">依赖的传递性</h2>
<p>非compile范围的依赖不能传递</p>
<h2 id="依赖的排除">依赖的排除</h2>
<h2 id="常见问题">常见问题</h2>
<h3 id="配置maven仓库国内镜像源">配置maven仓库国内镜像源</h3>
<p><a href="https://maven.aliyun.com/mvn/guide">https://maven.aliyun.com/mvn/guide</a></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml">	<span style="color:#f92672">&lt;mirror&gt;</span>
		<span style="color:#f92672">&lt;id&gt;</span>aliyunmaven<span style="color:#f92672">&lt;/id&gt;</span>
		<span style="color:#f92672">&lt;mirrorOf&gt;</span>*<span style="color:#f92672">&lt;/mirrorOf&gt;</span>
		<span style="color:#f92672">&lt;name&gt;</span>阿里云公共仓库<span style="color:#f92672">&lt;/name&gt;</span>
		<span style="color:#f92672">&lt;url&gt;</span>https://maven.aliyun.com/repository/public<span style="color:#f92672">&lt;/url&gt;</span>
	<span style="color:#f92672">&lt;/mirror&gt;</span>
</code></pre></div><h3 id="环境配置方案">环境配置方案</h3>
<p>可以用于解决idea中新建的maven项目默认java版本错误的问题</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml">    <span style="color:#f92672">&lt;profile&gt;</span>
      <span style="color:#f92672">&lt;id&gt;</span>development<span style="color:#f92672">&lt;/id&gt;</span>

      <span style="color:#f92672">&lt;activation&gt;</span>
		<span style="color:#f92672">&lt;activeByDefault&gt;</span>true<span style="color:#f92672">&lt;/activeByDefault&gt;</span>
        <span style="color:#f92672">&lt;jdk&gt;</span>1.8<span style="color:#f92672">&lt;/jdk&gt;</span>
      <span style="color:#f92672">&lt;/activation&gt;</span>

	  <span style="color:#f92672">&lt;properties&gt;</span>
	  	<span style="color:#f92672">&lt;maven.compiler.source&gt;</span>1.8<span style="color:#f92672">&lt;/maven.compiler.source&gt;</span>
	  		<span style="color:#f92672">&lt;maven.compiler.target&gt;</span>1.8<span style="color:#f92672">&lt;/maven.compiler.target&gt;</span>
	  		<span style="color:#f92672">&lt;maven.compiler.compilerVersion&gt;</span>1.8<span style="color:#f92672">&lt;/maven.compiler.compilerVersion&gt;</span>
	  <span style="color:#f92672">&lt;/properties&gt;</span>
	  
    <span style="color:#f92672">&lt;/profile&gt;</span>
</code></pre></div><h2 id="静态资源导出">静态资源导出</h2>
<p><code>pom.xml</code></p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
<span style="color:#f92672">&lt;project</span> <span style="color:#a6e22e">xmlns=</span><span style="color:#e6db74">&#34;http://maven.apache.org/POM/4.0.0&#34;</span>
         <span style="color:#a6e22e">xmlns:xsi=</span><span style="color:#e6db74">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
         <span style="color:#a6e22e">xsi:schemaLocation=</span><span style="color:#e6db74">&#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;</span><span style="color:#f92672">&gt;</span>
    <span style="color:#f92672">&lt;modelVersion&gt;</span>4.0.0<span style="color:#f92672">&lt;/modelVersion&gt;</span>

    <span style="color:#f92672">&lt;groupId&gt;</span>com.alex<span style="color:#f92672">&lt;/groupId&gt;</span>
    <span style="color:#f92672">&lt;artifactId&gt;</span>Learn_SSM<span style="color:#f92672">&lt;/artifactId&gt;</span>
    <span style="color:#f92672">&lt;version&gt;</span>1.0-SNAPSHOT<span style="color:#f92672">&lt;/version&gt;</span>

    <span style="color:#f92672">&lt;build&gt;</span>
        <span style="color:#f92672">&lt;resources&gt;</span>
            <span style="color:#f92672">&lt;resource&gt;</span>
                <span style="color:#f92672">&lt;directory&gt;</span>src/main/java<span style="color:#f92672">&lt;/directory&gt;</span>
                <span style="color:#f92672">&lt;includes&gt;</span>
                    <span style="color:#f92672">&lt;include&gt;</span>**/*.properties<span style="color:#f92672">&lt;/include&gt;</span>
                    <span style="color:#f92672">&lt;include&gt;</span>**/*.xml<span style="color:#f92672">&lt;/include&gt;</span>
                <span style="color:#f92672">&lt;/includes&gt;</span>
                <span style="color:#f92672">&lt;filtering&gt;</span>false<span style="color:#f92672">&lt;/filtering&gt;</span>
            <span style="color:#f92672">&lt;/resource&gt;</span>
            <span style="color:#f92672">&lt;resource&gt;</span>
                <span style="color:#f92672">&lt;directory&gt;</span>src/main/resources<span style="color:#f92672">&lt;/directory&gt;</span>
                <span style="color:#f92672">&lt;includes&gt;</span>
                    <span style="color:#f92672">&lt;include&gt;</span>**/*.properties<span style="color:#f92672">&lt;/include&gt;</span>
                    <span style="color:#f92672">&lt;include&gt;</span>**/*.xml<span style="color:#f92672">&lt;/include&gt;</span>
                <span style="color:#f92672">&lt;/includes&gt;</span>
                <span style="color:#f92672">&lt;filtering&gt;</span>false<span style="color:#f92672">&lt;/filtering&gt;</span>
            <span style="color:#f92672">&lt;/resource&gt;</span>
        <span style="color:#f92672">&lt;/resources&gt;</span>
    <span style="color:#f92672">&lt;/build&gt;</span>

<span style="color:#f92672">&lt;/project&gt;</span>

</code></pre></div><h2 id="手动安装第三方jar">手动安装第三方JAR</h2>
<p>尽管很少，但有时，您将需要将第3方JAR放入本地存储库中以在构建中使用，因为它们在<a href="https://search.maven.org/">Maven Central之</a>类的任何公共存储库中都不存在。必须将JAR放置在本地存储库中的正确位置，以便Apache Maven可以正确地拾取JAR。</p>
<p>为了使此操作更容易且不易出错，我们<code>install-file</code>在<a href="http://maven.apache.org/plugins/maven-install-plugin/">maven-install-plugin中</a>提供了一个目标，该目标应使此工作相对简单。</p>
<p>要在本地存储库中安装JAR，请使用以下命令：</p>
<pre><code>mvn install:install-file -Dfile=&lt;path-to-file&gt; -DgroupId=&lt;group-id&gt; -DartifactId=&lt;artifact-id&gt; -Dversion=&lt;version&gt; -Dpackaging=&lt;packaging&gt;
</code></pre><p>如果还有pom文件，则可以使用以下命令进行安装：</p>
<pre><code>mvn install:install-file -Dfile=&lt;path-to-file&gt; -DpomFile=&lt;path-to-pomfile&gt;
</code></pre><p>使用maven-install-plugin的2.5版，它甚至可以变得更加简单：如果JAR是由Apache Maven构建的，则它将在META-INF /目录的子文件夹中包含pom.xml，该文件将被读取。默认。在这种情况下，您需要做的只是：</p>
<pre><code>mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=&lt;path-to-file&gt;
</code></pre><h2 id="导出项目依赖的jar">导出项目依赖的JAR</h2>
<p>导出所有</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672">&lt;build&gt;</span>
    <span style="color:#f92672">&lt;plugins&gt;</span>
        <span style="color:#f92672">&lt;plugin&gt;</span>
            <span style="color:#f92672">&lt;groupId&gt;</span>org.apache.maven.plugins<span style="color:#f92672">&lt;/groupId&gt;</span>
            <span style="color:#f92672">&lt;artifactId&gt;</span>maven-dependency-plugin<span style="color:#f92672">&lt;/artifactId&gt;</span>
        <span style="color:#f92672">&lt;/plugin&gt;</span>
    <span style="color:#f92672">&lt;/plugins&gt;</span>
<span style="color:#f92672">&lt;/build&gt;</span>
</code></pre></div><p>导出指定</p>
<pre><code>&lt;build&gt;
    &lt;plugins&gt;
        &lt;plugin&gt;
            &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
            &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;
            &lt;configuration&gt;
                &lt;includeArtifactIds&gt;
                    shiro-freemarker-tags
                &lt;/includeArtifactIds&gt;
            &lt;/configuration&gt;
        &lt;/plugin&gt;
    &lt;/plugins&gt;
&lt;/build&gt;
</code></pre><p>cli:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn dependency:copy-dependencies -DoutputDirectory<span style="color:#f92672">=</span>d://lib

mvn dependency:copy-dependencies -DincludeArtifactIds<span style="color:#f92672">=</span>shiro-freemarker-tags

</code></pre></div><p>mvn -DoutputDirectory=./lib -DgroupId=org.example -DartifactId=untitled -Dversion=1.0-SNAPSHOT dependency:copy-dependencies</p>
<h2 id="nexus-repository-oss">nexus repository oss</h2>
<h3 id="aliyun">aliyun</h3>
<p>aliyun提供了免费、可靠的Maven私有仓库 <a href="https://packages.aliyun.com/?channel=maven.aliyun">Packages</a></p>
<p>通过本指南快速设置仓库凭证，并完成制品文件的推送。
本方法适用于本地进行过settings.xml的配置，需要在您的settings.xml文件中修改配置完成操作。若您在本地没有进行过 Maven 配置，可参考 推送(覆盖方式)。</p>
<p>步骤一：设置仓库凭证</p>
<p>请在settings.xml文件<!-- raw HTML omitted --><!-- raw HTML omitted -->中设置以下仓库的访问凭证，通常settings.xml在$HOME/.m2/文件目录下。</p>
<p>凭证</p>
<pre><code>&lt;servers&gt;
  &lt;server&gt;
    &lt;id&gt;rdc-releases&lt;/id&gt;
    &lt;username&gt;************************&lt;/username&gt;
    &lt;password&gt;************&lt;/password&gt;
  &lt;/server&gt;
  &lt;server&gt;
    &lt;id&gt;rdc-snapshots&lt;/id&gt;
    &lt;username&gt;************************&lt;/username&gt;
    &lt;password&gt;************&lt;/password&gt;
  &lt;/server&gt;
&lt;/servers&gt;
</code></pre><p>以上配置中的username和password为您的个人凭证，个人对仓库制品文件的操作权限根据仓库用户角色设置。查看说明</p>
<p>为了您的仓库安全，用户名和密码已经隐藏。您可点击右上角直接复制，或者去除隐藏后手动复制。</p>
<p>步骤二：制品上传配置</p>
<p>请在settings.xml文件<!-- raw HTML omitted --><!-- raw HTML omitted -->中添加以下配置。</p>
<p>配置</p>
<pre><code>&lt;profiles&gt;
  &lt;profile&gt;
    &lt;id&gt;rdc&lt;/id&gt;
    &lt;properties&gt;
      &lt;altReleaseDeploymentRepository&gt;
        rdc-releases::default::https://packages.aliyun.com/maven/repository/2069554-release-XWBu2s/
      &lt;/altReleaseDeploymentRepository&gt;
      &lt;altSnapshotDeploymentRepository&gt;
        rdc-snapshots::default::https://packages.aliyun.com/maven/repository/2069554-snapshot-mBeUVh/
      &lt;/altSnapshotDeploymentRepository&gt;
    &lt;/properties&gt;
  &lt;/profile&gt;
&lt;/profiles&gt;
</code></pre><p>请在settings.xml文件<!-- raw HTML omitted --><!-- raw HTML omitted -->中添加以下配置。</p>
<p>配置</p>
<pre><code>&lt;activeProfiles&gt;
  &lt;activeProfile&gt;rdc&lt;/activeProfile&gt;
&lt;/activeProfiles&gt;
</code></pre><p>为了您能更快速的下载公共资源的制品文件，我们建议您在settings.xml文件<!-- raw HTML omitted --><!-- raw HTML omitted -->中添加阿里云公库代理配置。</p>
<p>配置</p>
<pre><code>&lt;mirrors&gt;
  &lt;mirror&gt;
    &lt;id&gt;mirror&lt;/id&gt;
    &lt;mirrorOf&gt;central,jcenter,!rdc-releases,!rdc-snapshots&lt;/mirrorOf&gt;
    &lt;name&gt;mirror&lt;/name&gt;
    &lt;url&gt;https://maven.aliyun.com/nexus/content/groups/public&lt;/url&gt;
  &lt;/mirror&gt;
&lt;/mirrors&gt;
</code></pre><p>步骤三：推送</p>
<p>运行以下命令完成制品推送。</p>
<p>推送命令</p>
<p>mvn clean install org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy -DskipTests</p>
<p>说明</p>
<p>云效默认为你提供了两个仓库：</p>
<p>Maven Release 库用于存储功能趋于稳定、当前更新停止，可以用于发行的版本。
Maven Snapshot 库用于存储不稳定、尚处于开发中的版本，即快照版本。</p>
<p>您的制品文件具体推送到哪个库，根据您项目目录的pom.xml文件中<!-- raw HTML omitted --><!-- raw HTML omitted -->字段中是否配置了-SNAPSHOT。</p>
<p>推送至 Release 库pom.xml示例：</p>
<p>示例</p>
<pre><code>&lt;groupId&gt;com.example.xxxx&lt;/groupId&gt;
&lt;artifactId&gt;xxxx&lt;/artifactId&gt;
&lt;version&gt;1.0&lt;/version&gt;
</code></pre><p>推送至 Snapshot 库pom.xml示例：</p>
<p>示例</p>
<pre><code>&lt;groupId&gt;com.example.xxxx&lt;/groupId&gt;
&lt;artifactId&gt;xxxx&lt;/artifactId&gt;
&lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
</code></pre><h2 id="maven项目发布到私有仓库">maven项目发布到私有仓库</h2>
<p>pom文件需要添加发布配置</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml">    <span style="color:#f92672">&lt;distributionManagement&gt;</span>
        <span style="color:#f92672">&lt;repository&gt;</span>
            <span style="color:#f92672">&lt;id&gt;</span>rdc-releases<span style="color:#f92672">&lt;/id&gt;</span>
            <span style="color:#f92672">&lt;name&gt;</span>rdc releases for alex_zen @aliyun<span style="color:#f92672">&lt;/name&gt;</span>
            <span style="color:#f92672">&lt;url&gt;</span>https://packages.aliyun.com/maven/repository/2069554-release-XWBu2s/<span style="color:#f92672">&lt;/url&gt;</span>
        <span style="color:#f92672">&lt;/repository&gt;</span>
        <span style="color:#f92672">&lt;snapshotRepository&gt;</span>
            <span style="color:#f92672">&lt;id&gt;</span>rdc-snapshots<span style="color:#f92672">&lt;/id&gt;</span>
            <span style="color:#f92672">&lt;name&gt;</span>rdc snapshots for alex_zen @aliyun<span style="color:#f92672">&lt;/name&gt;</span>
            <span style="color:#f92672">&lt;url&gt;</span>https://packages.aliyun.com/maven/repository/2069554-snapshot-mBeUVh/<span style="color:#f92672">&lt;/url&gt;</span>
        <span style="color:#f92672">&lt;/snapshotRepository&gt;</span>
    <span style="color:#f92672">&lt;/distributionManagement&gt;</span>

    <span style="color:#f92672">&lt;build&gt;</span>
        <span style="color:#f92672">&lt;plugins&gt;</span>
            <span style="color:#f92672">&lt;plugin&gt;</span>
                <span style="color:#f92672">&lt;groupId&gt;</span>org.apache.maven.plugins<span style="color:#f92672">&lt;/groupId&gt;</span>
                <span style="color:#f92672">&lt;artifactId&gt;</span>maven-deploy-plugin<span style="color:#f92672">&lt;/artifactId&gt;</span>
                <span style="color:#f92672">&lt;version&gt;</span>2.8.2<span style="color:#f92672">&lt;/version&gt;</span>
            <span style="color:#f92672">&lt;/plugin&gt;</span>
        <span style="color:#f92672">&lt;/plugins&gt;</span>
    <span style="color:#f92672">&lt;/build&gt;</span>
</code></pre></div><p>另外 maven 的 settings.xml 需要配置私有仓库, 参见(需要登录阿里云):</p>
<p><a href="https://packages.aliyun.com/repos/2069554-release-XWBu2s/guide">https://packages.aliyun.com/repos/2069554-release-XWBu2s/guide</a></p>
<h2 id="maven-aliyun-使用指南">Maven Aliyun 使用指南</h2>
<h3 id="仓库介绍">仓库介绍</h3>
<p>阿里云云效 Maven 是什么</p>
<p>阿里云Maven中央仓库为 <a href="https://flow.aliyun.com/?channel=maven.aliyun">阿里云云效</a> 提供的公共代理仓库，帮助研发人员提高研发生产效率，使用阿里云Maven中央仓库作为下载源，速度更快更稳定。</p>
<p><a href="https://flow.aliyun.com/?channel=maven.aliyun">阿里云云效</a> 是企业级一站式 DevOps 平台，覆盖产品从需求到运营的研发全生命周期，其中云效也提供了免费、可靠的Maven私有仓库 <a href="https://packages.aliyun.com/?channel=maven.aliyun">Packages</a>，欢迎您体验使用。</p>
<table>
<thead>
<tr>
<th style="text-align:left">仓库名称</th>
<th style="text-align:left">阿里云仓库地址</th>
<th style="text-align:left">阿里云仓库地址(老版)</th>
<th style="text-align:left">源地址</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">central</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/central">https://maven.aliyun.com/repository/central</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/central">https://maven.aliyun.com/nexus/content/repositories/central</a></td>
<td style="text-align:left"><a href="https://repo1.maven.org/maven2/">https://repo1.maven.org/maven2/</a></td>
</tr>
<tr>
<td style="text-align:left">jcenter</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/public">https://maven.aliyun.com/repository/public</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/jcenter">https://maven.aliyun.com/nexus/content/repositories/jcenter</a></td>
<td style="text-align:left"><a href="http://jcenter.bintray.com/">http://jcenter.bintray.com/</a></td>
</tr>
<tr>
<td style="text-align:left">public</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/public">https://maven.aliyun.com/repository/public</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/groups/public">https://maven.aliyun.com/nexus/content/groups/public</a></td>
<td style="text-align:left">central仓和jcenter仓的聚合仓</td>
</tr>
<tr>
<td style="text-align:left">google</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/google">https://maven.aliyun.com/repository/google</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/google">https://maven.aliyun.com/nexus/content/repositories/google</a></td>
<td style="text-align:left"><a href="https://maven.google.com/">https://maven.google.com/</a></td>
</tr>
<tr>
<td style="text-align:left">gradle-plugin</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/gradle-plugin">https://maven.aliyun.com/repository/gradle-plugin</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/gradle-plugin">https://maven.aliyun.com/nexus/content/repositories/gradle-plugin</a></td>
<td style="text-align:left"><a href="https://plugins.gradle.org/m2/">https://plugins.gradle.org/m2/</a></td>
</tr>
<tr>
<td style="text-align:left">spring</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/spring">https://maven.aliyun.com/repository/spring</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/spring">https://maven.aliyun.com/nexus/content/repositories/spring</a></td>
<td style="text-align:left"><a href="http://repo.spring.io/libs-milestone/">http://repo.spring.io/libs-milestone/</a></td>
</tr>
<tr>
<td style="text-align:left">spring-plugin</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/spring-plugin">https://maven.aliyun.com/repository/spring-plugin</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/spring-plugin">https://maven.aliyun.com/nexus/content/repositories/spring-plugin</a></td>
<td style="text-align:left"><a href="http://repo.spring.io/plugins-release/">http://repo.spring.io/plugins-release/</a></td>
</tr>
<tr>
<td style="text-align:left">grails-core</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/grails-core">https://maven.aliyun.com/repository/grails-core</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/grails-core">https://maven.aliyun.com/nexus/content/repositories/grails-core</a></td>
<td style="text-align:left"><a href="https://repo.grails.org/grails/core">https://repo.grails.org/grails/core</a></td>
</tr>
<tr>
<td style="text-align:left">apache snapshots</td>
<td style="text-align:left"><a href="https://maven.aliyun.com/repository/apache-snapshots">https://maven.aliyun.com/repository/apache-snapshots</a></td>
<td style="text-align:left"><a href="https://maven.aliyun.com/nexus/content/repositories/apache-snapshots">https://maven.aliyun.com/nexus/content/repositories/apache-snapshots</a></td>
<td style="text-align:left"><a href="https://repository.apache.org/snapshots/">https://repository.apache.org/snapshots/</a></td>
</tr>
</tbody>
</table>
<h3 id="配置指南">配置指南</h3>
<h4 id="maven-配置指南">Maven 配置指南</h4>
<p>maven 配置指南</p>
<p>打开 maven 的配置文件（ windows 机器一般在 maven 安装目录的 <strong>conf/settings.xml</strong> ），在<!-- raw HTML omitted --><!-- raw HTML omitted -->标签中添加 mirror 子节点:</p>
<pre><code>&lt;mirror&gt;
  &lt;id&gt;aliyunmaven&lt;/id&gt;
  &lt;mirrorOf&gt;*&lt;/mirrorOf&gt;
  &lt;name&gt;阿里云公共仓库&lt;/name&gt;
  &lt;url&gt;https://maven.aliyun.com/repository/public&lt;/url&gt;
&lt;/mirror&gt;
</code></pre><p>如果想使用其它代理仓库，可在<!-- raw HTML omitted --><!-- raw HTML omitted -->节点中加入对应的仓库使用地址。以使用 spring 代理仓为例：</p>
<pre><code>&lt;repository&gt;
  &lt;id&gt;spring&lt;/id&gt;
  &lt;url&gt;https://maven.aliyun.com/repository/spring&lt;/url&gt;
  &lt;releases&gt;
    &lt;enabled&gt;true&lt;/enabled&gt;
  &lt;/releases&gt;
  &lt;snapshots&gt;
    &lt;enabled&gt;true&lt;/enabled&gt;
  &lt;/snapshots&gt;
&lt;/repository&gt;
</code></pre><p>在你的 <strong>pom.xml</strong> 文件<!-- raw HTML omitted --><!-- raw HTML omitted -->节点中加入你要引用的文件信息：</p>
<pre><code>&lt;dependency&gt;
  &lt;groupId&gt;[GROUP_ID]&lt;/groupId&gt;
  &lt;artifactId&gt;[ARTIFACT_ID]&lt;/artifactId&gt;
  &lt;version&gt;[VERSION]&lt;/version&gt;
&lt;/dependency&gt;
</code></pre><p>执行拉取命令：</p>
<pre><code>mvn install
</code></pre><h4 id="gradle-配置指南">gradle 配置指南</h4>
<p>gradle 配置指南</p>
<p>在 build.gradle 文件中加入以下代码:</p>
<pre><code>allprojects {
  repositories {
    maven {
      url 'https://maven.aliyun.com/repository/public/'
    }
    mavenLocal()
    mavenCentral()
  }
}
</code></pre><p>如果想使用其它代理仓，以使用spring仓为例，代码如下:</p>
<pre><code>allProjects {
  repositories {
    maven {
      url 'https://maven.aliyun.com/repository/public/'
    }
    maven {
      url 'https://maven.aliyun.com/repository/spring/'
    }
    mavenLocal()
    mavenCentral()
  }
}
</code></pre><p>加入你要引用的文件信息：</p>
<pre><code>dependencies {
  compile '[GROUP_ID]:[ARTIFACT_ID]:[VERSION]'
}
</code></pre><p>执行命令：</p>
<pre><code>gradle dependencies 或 ./gradlew dependencies 安装依赖
</code></pre><h2 id="maven-plugin-插件">maven plugin 插件</h2>
<p>maven -jar- plugin 打出来是jar包，maven -war- plugin 打出来是war包。</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672">&lt;plugin&gt;</span>
	<span style="color:#f92672">&lt;groupId&gt;</span>org.apache.maven.plugins<span style="color:#f92672">&lt;/groupId&gt;</span>
	<span style="color:#f92672">&lt;artifactId&gt;</span>maven-jar-plugin<span style="color:#f92672">&lt;/artifactId&gt;</span> ----打jar包
	<span style="color:#f92672">&lt;version&gt;</span>2.4<span style="color:#f92672">&lt;/version&gt;</span>
	<span style="color:#f92672">&lt;configuration&gt;</span>
			<span style="color:#f92672">&lt;excludes&gt;</span>--排除classpath下文件
			<span style="color:#f92672">&lt;exclude&gt;</span>**/*.properties<span style="color:#f92672">&lt;/exclude&gt;</span>
			<span style="color:#f92672">&lt;exclude&gt;</span>**/*.xml<span style="color:#f92672">&lt;/exclude&gt;</span>
			<span style="color:#f92672">&lt;exclude&gt;</span>META-INF/**/*<span style="color:#f92672">&lt;/exclude&gt;</span>
			<span style="color:#f92672">&lt;/excludes&gt;</span>
	<span style="color:#f92672">&lt;/configuration&gt;</span>
<span style="color:#f92672">&lt;/plugin&gt;</span>
</code></pre></div><p>自定义格式包assembly.xml, maven-assembly-plugin打包插件</p>
<p>pom.xml</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672">&lt;plugin&gt;</span>
	<span style="color:#f92672">&lt;artifactId&gt;</span>maven-assembly-plugin<span style="color:#f92672">&lt;/artifactId&gt;</span>
	<span style="color:#f92672">&lt;configuration&gt;</span>
<span style="color:#f92672">&lt;descriptor&gt;</span>src/main/assembly/assembly.xml<span style="color:#f92672">&lt;/descriptor&gt;</span>--assembly.xml 路径
	<span style="color:#f92672">&lt;/configuration&gt;</span>
	<span style="color:#f92672">&lt;executions&gt;</span>
		<span style="color:#f92672">&lt;execution&gt;</span>
			<span style="color:#f92672">&lt;id&gt;</span>make-assembly<span style="color:#f92672">&lt;/id&gt;</span>
			<span style="color:#f92672">&lt;phase&gt;</span>package<span style="color:#f92672">&lt;/phase&gt;</span>
			<span style="color:#f92672">&lt;goals&gt;</span>
					<span style="color:#f92672">&lt;goal&gt;</span>single<span style="color:#f92672">&lt;/goal&gt;</span>----只运行一次
			<span style="color:#f92672">&lt;/goals&gt;</span>
		<span style="color:#f92672">&lt;/execution&gt;</span>
	<span style="color:#f92672">&lt;/executions&gt;</span>
<span style="color:#f92672">&lt;/plugin&gt;</span>
</code></pre></div><p>assembly.xml</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672">&lt;assembly&gt;</span>
	<span style="color:#f92672">&lt;id&gt;</span>assembly<span style="color:#f92672">&lt;/id&gt;</span>---名字
	<span style="color:#f92672">&lt;formats&gt;</span>
		<span style="color:#f92672">&lt;format&gt;</span>tar.gz<span style="color:#f92672">&lt;/format&gt;</span>--打包格式
	<span style="color:#f92672">&lt;/formats&gt;</span>
	<span style="color:#f92672">&lt;includeBaseDirectory&gt;</span>true<span style="color:#f92672">&lt;/includeBaseDirectory&gt;</span>
	<span style="color:#f92672">&lt;fileSets&gt;</span>
		<span style="color:#f92672">&lt;fileSet&gt;</span>
			<span style="color:#f92672">&lt;directory&gt;</span>target/classes/META-INF/conf<span style="color:#f92672">&lt;/directory&gt;</span>这个路径				<span style="color:#f92672">&lt;outputDirectory&gt;</span>conf/META-INF/conf<span style="color:#f92672">&lt;/outputDirectory&gt;</span>--输出到这个路径下
			<span style="color:#f92672">&lt;fileMode&gt;</span>0644<span style="color:#f92672">&lt;/fileMode&gt;</span>---linux权限
		<span style="color:#f92672">&lt;/fileSet&gt;</span>
			<span style="color:#f92672">&lt;directory&gt;</span>target/classes<span style="color:#f92672">&lt;/directory&gt;</span>--这个目录下，不会遍历下层目录
			<span style="color:#f92672">&lt;outputDirectory&gt;</span>conf<span style="color:#f92672">&lt;/outputDirectory&gt;</span>
			<span style="color:#f92672">&lt;fileMode&gt;</span>0644<span style="color:#f92672">&lt;/fileMode&gt;</span>
			<span style="color:#f92672">&lt;includes&gt;</span>--只负责这些目标文件
				<span style="color:#f92672">&lt;include&gt;</span>*.properties<span style="color:#f92672">&lt;/include&gt;</span>
				<span style="color:#f92672">&lt;include&gt;</span>*.xml<span style="color:#f92672">&lt;/include&gt;</span>
			<span style="color:#f92672">&lt;/includes&gt;</span>
		<span style="color:#f92672">&lt;/fileSet&gt;</span>
	<span style="color:#f92672">&lt;/fileSets&gt;</span>
	<span style="color:#f92672">&lt;dependencySets&gt;</span>
		<span style="color:#f92672">&lt;dependencySet&gt;</span>
			<span style="color:#f92672">&lt;outputDirectory&gt;</span>lib<span style="color:#f92672">&lt;/outputDirectory&gt;</span>---输出到lib路径
		<span style="color:#f92672">&lt;/dependencySet&gt;</span>
	<span style="color:#f92672">&lt;/dependencySets&gt;</span>
<span style="color:#f92672">&lt;/assembly&gt;</span>
</code></pre></div>
    
      
    
  </article>
<aside class="sidebar">
  <section class="sidebar_inner">
    
    <h2 class="mt-4">Featured Posts</h2>
    <ul>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E7%99%BB%E5%BD%95%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/" class="nav-link">Java登录技术总结</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E5%90%8E%E7%AB%AF%E6%95%B4%E5%90%88%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD/" class="nav-link">Java后端整合微信登录功能</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/termux/" class="nav-link">Termux</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/activemq/" class="nav-link">ActiveMQ</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/bitwarden/" class="nav-link">Bitwarden</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/centos7/" class="nav-link">CentOS_7</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/docker/" class="nav-link">Docker</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/idea%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/" class="nav-link">Idea使用技巧积累</a>
      </li>
    </ul>
    <h2 class="mt-4">Recent Posts</h2>
    <ul class="flex-column">
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E7%99%BB%E5%BD%95%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/" class="nav-link">Java登录技术总结</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/java%E5%90%8E%E7%AB%AF%E6%95%B4%E5%90%88%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD/" class="nav-link">Java后端整合微信登录功能</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/termux/" class="nav-link">Termux</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/activemq/" class="nav-link">ActiveMQ</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/bitwarden/" class="nav-link">Bitwarden</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/centos7/" class="nav-link">CentOS_7</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/docker/" class="nav-link">Docker</a>
      </li>
      <li>
        <a href="https://alexzshl.gitee.io/blog/post/idea%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/" class="nav-link">Idea使用技巧积累</a>
      </li>
    </ul>
    <div>
      <h2 class="mt-4 taxonomy" id="categories-section">Categories</h2>
      <nav class="tags_nav">
        <a href='https://alexzshl.gitee.io/blog/categories/java/' class="post_tag button button_translucent">
          JAVA
          <span class="button_tally">12</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/linux/' class="post_tag button button_translucent">
          LINUX
          <span class="button_tally">3</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/spring/' class="post_tag button button_translucent">
          SPRING
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/tool/' class="post_tag button button_translucent">
          TOOL
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/web/' class="post_tag button button_translucent">
          WEB
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/book/' class="post_tag button button_translucent">
          BOOK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/centos/' class="post_tag button button_translucent">
          CENTOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/database/' class="post_tag button button_translucent">
          DATABASE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/devops/' class="post_tag button button_translucent">
          DEVOPS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/docker/' class="post_tag button button_translucent">
          DOCKER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/framework/' class="post_tag button button_translucent">
          FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/ide/' class="post_tag button button_translucent">
          IDE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/idea/' class="post_tag button button_translucent">
          IDEA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/internet/' class="post_tag button button_translucent">
          INTERNET
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/javascript-framework/' class="post_tag button button_translucent">
          JAVASCRIPT-FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/json/' class="post_tag button button_translucent">
          JSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/lib/' class="post_tag button button_translucent">
          LIB
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/login/' class="post_tag button button_translucent">
          LOGIN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/maven/' class="post_tag button button_translucent">
          MAVEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/messaging/' class="post_tag button button_translucent">
          MESSAGING
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/mysql/' class="post_tag button button_translucent">
          MYSQL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/orm/' class="post_tag button button_translucent">
          ORM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/security/' class="post_tag button button_translucent">
          SECURITY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springboot/' class="post_tag button button_translucent">
          SPRINGBOOT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springcloud/' class="post_tag button button_translucent">
          SPRINGCLOUD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springdata/' class="post_tag button button_translucent">
          SPRINGDATA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/springmvc/' class="post_tag button button_translucent">
          SPRINGMVC
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/ssh/' class="post_tag button button_translucent">
          SSH
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/terminal/' class="post_tag button button_translucent">
          TERMINAL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/categories/web-framework/' class="post_tag button button_translucent">
          WEB-FRAMEWORK
          <span class="button_tally">1</span>
        </a>
        
        
      </nav>
    </div>
    <div>
      <h2 class="mt-4 taxonomy" id="tags-section">Tags</h2>
      <nav class="tags_nav">
        <a href='https://alexzshl.gitee.io/blog/tags/activemq/' class="post_tag button button_translucent">
          ACTIVEMQ
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/docker/' class="post_tag button button_translucent">
          DOCKER
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/elasticsearch/' class="post_tag button button_translucent">
          ELASTICSEARCH
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/git/' class="post_tag button button_translucent">
          GIT
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/login/' class="post_tag button button_translucent">
          LOGIN
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/maven/' class="post_tag button button_translucent">
          MAVEN
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/mysql/' class="post_tag button button_translucent">
          MYSQL
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/redis/' class="post_tag button button_translucent">
          REDIS
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh/' class="post_tag button button_translucent">
          SSH
          <span class="button_tally">2</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/404/' class="post_tag button button_translucent">
          404
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/aka.ms/' class="post_tag button button_translucent">
          AKA.MS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/authorized_keys/' class="post_tag button button_translucent">
          AUTHORIZED_KEYS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/bitwarden/' class="post_tag button button_translucent">
          BITWARDEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/centos/' class="post_tag button button_translucent">
          CENTOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/consul/' class="post_tag button button_translucent">
          CONSUL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/debug/' class="post_tag button button_translucent">
          DEBUG
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/design-pattern/' class="post_tag button button_translucent">
          DESIGN-PATTERN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/docker-compose/' class="post_tag button button_translucent">
          DOCKER-COMPOSE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/effective-java/' class="post_tag button button_translucent">
          EFFECTIVE-JAVA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/eureka/' class="post_tag button button_translucent">
          EUREKA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/feign/' class="post_tag button button_translucent">
          FEIGN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/fish/' class="post_tag button button_translucent">
          FISH
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/gateway/' class="post_tag button button_translucent">
          GATEWAY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/google/' class="post_tag button button_translucent">
          GOOGLE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/hibernate/' class="post_tag button button_translucent">
          HIBERNATE
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/hystrix/' class="post_tag button button_translucent">
          HYSTRIX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/interface-document/' class="post_tag button button_translucent">
          INTERFACE-DOCUMENT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jackson/' class="post_tag button button_translucent">
          JACKSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jpa/' class="post_tag button button_translucent">
          JPA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/json/' class="post_tag button button_translucent">
          JSON
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/jsr-107/' class="post_tag button button_translucent">
          JSR-107
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/keygen/' class="post_tag button button_translucent">
          KEYGEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/messaging/' class="post_tag button button_translucent">
          MESSAGING
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/microsoft/' class="post_tag button button_translucent">
          MICROSOFT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/nacos/' class="post_tag button button_translucent">
          NACOS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/nginx/' class="post_tag button button_translucent">
          NGINX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/npm/' class="post_tag button button_translucent">
          NPM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/rsa/' class="post_tag button button_translucent">
          RSA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/security/' class="post_tag button button_translucent">
          SECURITY
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/shell/' class="post_tag button button_translucent">
          SHELL
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/springcloud-alibaba/' class="post_tag button button_translucent">
          SPRINGCLOUD-ALIBABA
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/springmvc/' class="post_tag button button_translucent">
          SPRINGMVC
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-add/' class="post_tag button button_translucent">
          SSH-ADD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-agent/' class="post_tag button button_translucent">
          SSH-AGENT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/ssh-keygen/' class="post_tag button button_translucent">
          SSH-KEYGEN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/stackoverflow/' class="post_tag button button_translucent">
          STACKOVERFLOW
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/swagger/' class="post_tag button button_translucent">
          SWAGGER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/task/' class="post_tag button button_translucent">
          TASK
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/tencent-cloud/' class="post_tag button button_translucent">
          TENCENT-CLOUD
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/termux/' class="post_tag button button_translucent">
          TERMUX
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/vue.js/' class="post_tag button button_translucent">
          VUE.JS
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/vue.js-2/' class="post_tag button button_translucent">
          VUE.JS-2
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/web/' class="post_tag button button_translucent">
          WEB
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/wechat/' class="post_tag button button_translucent">
          WECHAT
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/weixin/' class="post_tag button button_translucent">
          WEIXIN
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/yum/' class="post_tag button button_translucent">
          YUM
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/zookeeper/' class="post_tag button button_translucent">
          ZOOKEEPER
          <span class="button_tally">1</span>
        </a>
        
        <a href='https://alexzshl.gitee.io/blog/tags/zsh/' class="post_tag button button_translucent">
          ZSH
          <span class="button_tally">1</span>
        </a>
        
        
      </nav>
    </div>
  </section>
</aside>

</div>
    </main><svg width="0" height="0" class="hidden">
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="facebook">
    <path d="M437 0H75C33.648 0 0 33.648 0 75v362c0 41.352 33.648 75 75 75h151V331h-60v-90h60v-61c0-49.629 40.371-90 90-90h91v90h-91v61h91l-15 90h-76v181h121c41.352 0 75-33.648 75-75V75c0-41.352-33.648-75-75-75zm0 0"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.001 18.001" id="twitter">
    <path d="M15.891 4.013c.808-.496 1.343-1.173 1.605-2.034a8.68 8.68 0 0 1-2.351.861c-.703-.756-1.593-1.14-2.66-1.14-1.043 0-1.924.366-2.643 1.078a3.56 3.56 0 0 0-1.076 2.605c0 .309.039.585.117.819-3.076-.105-5.622-1.381-7.628-3.837-.34.601-.51 1.213-.51 1.846 0 1.301.549 2.332 1.645 3.089-.625-.053-1.176-.211-1.645-.47 0 .929.273 1.705.82 2.388a3.623 3.623 0 0 0 2.115 1.291c-.312.08-.641.118-.979.118-.312 0-.533-.026-.664-.083.23.757.664 1.371 1.291 1.841a3.652 3.652 0 0 0 2.152.743C4.148 14.173 2.625 14.69.902 14.69c-.422 0-.721-.006-.902-.038 1.697 1.102 3.586 1.649 5.676 1.649 2.139 0 4.029-.542 5.674-1.626 1.645-1.078 2.859-2.408 3.639-3.974a10.77 10.77 0 0 0 1.172-4.892v-.468a7.788 7.788 0 0 0 1.84-1.921 8.142 8.142 0 0 1-2.11.593z"
      ></path>
  </symbol>
  <symbol aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="mail">
    <path  d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="calendar">
    <path d="M452 40h-24V0h-40v40H124V0H84v40H60C26.916 40 0 66.916 0 100v352c0 33.084 26.916 60 60 60h392c33.084 0 60-26.916 60-60V100c0-33.084-26.916-60-60-60zm20 412c0 11.028-8.972 20-20 20H60c-11.028 0-20-8.972-20-20V188h432v264zm0-304H40v-48c0-11.028 8.972-20 20-20h24v40h40V80h264v40h40V80h24c11.028 0 20 8.972 20 20v48z"></path>
    <path d="M76 230h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zM76 310h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zM76 390h40v40H76zm80 0h40v40h-40zm80 0h40v40h-40zm80 0h40v40h-40zm80-80h40v40h-40z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="github">
    <path d="M255.968 5.329C114.624 5.329 0 120.401 0 262.353c0 113.536 73.344 209.856 175.104 243.872 12.8 2.368 17.472-5.568 17.472-12.384 0-6.112-.224-22.272-.352-43.712-71.2 15.52-86.24-34.464-86.24-34.464-11.616-29.696-28.416-37.6-28.416-37.6-23.264-15.936 1.728-15.616 1.728-15.616 25.696 1.824 39.2 26.496 39.2 26.496 22.848 39.264 59.936 27.936 74.528 21.344 2.304-16.608 8.928-27.936 16.256-34.368-56.832-6.496-116.608-28.544-116.608-127.008 0-28.064 9.984-51.008 26.368-68.992-2.656-6.496-11.424-32.64 2.496-68 0 0 21.504-6.912 70.4 26.336 20.416-5.696 42.304-8.544 64.096-8.64 21.728.128 43.648 2.944 64.096 8.672 48.864-33.248 70.336-26.336 70.336-26.336 13.952 35.392 5.184 61.504 2.56 68 16.416 17.984 26.304 40.928 26.304 68.992 0 98.72-59.84 120.448-116.864 126.816 9.184 7.936 17.376 23.616 17.376 47.584 0 34.368-.32 62.08-.32 70.496 0 6.88 4.608 14.88 17.6 12.352C438.72 472.145 512 375.857 512 262.353 512 120.401 397.376 5.329 255.968 5.329z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212" id="gitlab">
    <path d="M12.3 74.7h54L43.3 3c-1-3.6-6.4-3.6-7.6 0L12.3 74.8z" />
    <path d="M12.3 74.7L.5 111c-1 3.2 0 6.8 3 8.8l101.6 74-92.5-119z"/>
    <path d="M105 193.7l-38.6-119h-54l92.7 119z"/>
    <path d="M105 193.7l38.7-119H66.4l38.7 119z"/>
    <path d="M105 193.7l38.7-119H198l-93 119z"/>
    <path d="M198 74.7l11.6 36.2c1 3 0 6.6-3 8.6l-101.5 74 93-119z"/>
    <path d="M198 74.7h-54.3L167 3c1.2-3.6 6.4-3.6 7.6 0L198 74.8z"/> 
  </symbol>
  <symbol viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" id="rss">
    <circle cx="3.429" cy="20.571" r="3.429"></circle>
    <path d="M11.429 24h4.57C15.999 15.179 8.821 8.001 0 8v4.572c6.302.001 11.429 5.126 11.429 11.428z"></path>
    <path d="M24 24C24 10.766 13.234 0 0 0v4.571c10.714 0 19.43 8.714 19.43 19.429z"></path>
  </symbol>
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="linkedin">
    <path d="M437 0H75C33.648 0 0 33.648 0 75v362c0 41.352 33.648 75 75 75h362c41.352 0 75-33.648 75-75V75c0-41.352-33.648-75-75-75zM181 406h-60V196h60zm0-240h-60v-60h60zm210 240h-60V286c0-16.54-13.46-30-30-30s-30 13.46-30 30v120h-60V196h60v11.309C286.719 202.422 296.93 196 316 196c40.691.043 75 36.547 75 79.688zm0 0"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612" id="arrow">
    <path d="M604.501 440.509L325.398 134.956c-5.331-5.357-12.423-7.627-19.386-7.27-6.989-.357-14.056 1.913-19.387 7.27L7.499 440.509c-9.999 10.024-9.999 26.298 0 36.323s26.223 10.024 36.222 0l262.293-287.164L568.28 476.832c9.999 10.024 26.222 10.024 36.221 0 9.999-10.023 9.999-26.298 0-36.323z"></path>
  </symbol>
  <symbol viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" id="carly">
    <path d="M504.971 239.029L448 182.059V84c0-46.317-37.682-84-84-84h-44c-13.255 0-24 10.745-24 24s10.745 24 24 24h44c19.851 0 36 16.149 36 36v108c0 6.365 2.529 12.47 7.029 16.971L454.059 256l-47.029 47.029A24.002 24.002 0 0 0 400 320v108c0 19.851-16.149 36-36 36h-44c-13.255 0-24 10.745-24 24s10.745 24 24 24h44c46.318 0 84-37.683 84-84v-98.059l56.971-56.971c9.372-9.372 9.372-24.568 0-33.941zM112 192V84c0-19.851 16.149-36 36-36h44c13.255 0 24-10.745 24-24S205.255 0 192 0h-44c-46.318 0-84 37.683-84 84v98.059l-56.971 56.97c-9.373 9.373-9.373 24.568 0 33.941L64 329.941V428c0 46.317 37.682 84 84 84h44c13.255 0 24-10.745 24-24s-10.745-24-24-24h-44c-19.851 0-36-16.149-36-36V320c0-6.365-2.529-12.47-7.029-16.971L57.941 256l47.029-47.029A24.002 24.002 0 0 0 112 192z"></path>
  </symbol>
  <symbol viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" id="copy">
    <path d="M23 2.75A2.75 2.75 0 0 0 20.25 0H8.75A2.75 2.75 0 0 0 6 2.75v13.5A2.75 2.75 0 0 0 8.75 19h11.5A2.75 2.75 0 0 0 23 16.25zM18.25 14.5h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5zm0-3h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5zm0-3h-7.5a.75.75 0 0 1 0-1.5h7.5a.75.75 0 0 1 0 1.5z"></path>
    <path d="M8.75 20.5a4.255 4.255 0 0 1-4.25-4.25V2.75c0-.086.02-.166.025-.25H3.75A2.752 2.752 0 0 0 1 5.25v16A2.752 2.752 0 0 0 3.75 24h12a2.752 2.752 0 0 0 2.75-2.75v-.75z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512.001 512.001" id="closeme">
    <path d="M284.286 256.002L506.143 34.144c7.811-7.811 7.811-20.475 0-28.285-7.811-7.81-20.475-7.811-28.285 0L256 227.717 34.143 5.859c-7.811-7.811-20.475-7.811-28.285 0-7.81 7.811-7.811 20.475 0 28.285l221.857 221.857L5.858 477.859c-7.811 7.811-7.811 20.475 0 28.285a19.938 19.938 0 0 0 14.143 5.857 19.94 19.94 0 0 0 14.143-5.857L256 284.287l221.857 221.857c3.905 3.905 9.024 5.857 14.143 5.857s10.237-1.952 14.143-5.857c7.811-7.811 7.811-20.475 0-28.285L284.286 256.002z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="open-menu">
    <path d="M492 236H20c-11.046 0-20 8.954-20 20s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20zm0-160H20C8.954 76 0 84.954 0 96s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20zm0 320H20c-11.046 0-20 8.954-20 20s8.954 20 20 20h472c11.046 0 20-8.954 20-20s-8.954-20-20-20z"></path>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="instagram">
    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id=youtube>
    <path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z"/>
  </symbol>
  <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="stackoverflow">
    <path d="M21 27v-8h3v11H0V19h3v8h18z"></path><path d="M17.1.2L15 1.8l7.9 10.6 2.1-1.6L17.1.2zm3.7 14.7L10.6 6.4l1.7-2 10.2 8.5-1.7 2zM7.2 12.3l12 5.6 1.1-2.4-12-5.6-1.1 2.4zm-1.8 6.8l13.56 1.96.17-2.38-13.26-2.55-.47 2.97zM19 25H5v-3h14v3z"></path>
  </symbol>
</svg>

<footer class="footer">
  <div class="footer_inner wrap pale">
    <img src='https://alexzshl.gitee.io/blog/icons/apple-touch-icon.png' class="icon icon_2 transparent">
    <p>Copyright<span class="year"></span> ALEXZSHL. All Rights Reserved</p><a class="to_top" href="#documentTop">
  <svg class="icon">
  <use xlink:href="#arrow"></use>
</svg>
</a>

  </div>
</footer>

    <script type="text/javascript" src="https://alexzshl.gitee.io/blog/js/bundle.min.16ce52f0798f54d65cefb0a0fc9228cf99e0b73de57f8a1545fe14259265bf79ba12fe15afd2fd75d5f0bff8f416e8ca8c5c3458f87e014cbfbed8ccfdaee327.js" integrity="sha512-Fs5S8HmPVNZc77Cg/JIoz5ngtz3lf4oVRf4UJZJlv3m6Ev4Vr9L9ddXwv/j0FujKjFw0WPh&#43;AUy/vtjM/a7jJw==" crossorigin="anonymous"></script>
    
  </body>
</html>
